<< 前のエントリ |メイン | 次のエントリ >>
2005 年04 月16 日

パソコンの理論は正しいけど、いろいろと失敗するんだ。

int result = 100;
int counter = 0;

while(TRUE)
{
  counter++;
  if (result = 0)
  {
    break;
  }
  result--;
}

printf("Yes, [while loop] end! counter:%d \n", counter);


while文は条件を満たさない限り、ずっと同じ処理を繰り返し行う。

最初100でスタート。1ずつ引いていくと
100, 99, 98, ...... , 2, 1, 0, -1 , -2 .....
0を必ず通るはずだ。0を通ったら終了!

しかし・・・待てど暮らせどWhile文から抜けない!?
『私の最後のメッセージは無視されたのか?(泣』

誤:if (result = 0)
正:if (result == 0)

このミスは初心者時代は意外と大丈夫だ。
しかし熟練してきて驕りが発生すると起きてしまうのだ。
『先生、最近タイピングが早すぎです。』
意外とタイピングが早くて凄そうに見えるがビビるべからず。
ゆっくりタイピングしている貴方の方が遥かに効率的でっせ。

While文では、いつも正しい理論が飛び交っているのだ。
常に正しい理論は常に同じ結果しか生まない。
パソコンにはそれが分からないんだよ。
パソコン自体に創造性は2005年現在は皆無!
ロボットも兵器も、まだまだIF文やWhileで状態監視が関の山。
いやあ・・・安心したね!(笑

おまけ要素として、修正後の最後のメッセージを見てみようじゃないか。
counter値は見事に101という結果が出る。
100回やって終わりじゃないんかい?
『違うのかよー・・・じゃあcounterの初期値を-1にするか・・・』
いいや、counterの更新場所が不適切なのさ。
記述場所をWhile文の最後に持ってこよう。
100という結果になるはずだ。こういう所よく間違えるよなあ(−^−;

少し長くなった・・・最後まで読んでくれた方に感謝(苦笑

投稿者:Bystenderat 02 :08| 日記 | コメント(2 ) | トラックバック(1 )

◆この記事へのトラックバックURL:

http://blog.nsk.ne.jp/util/tb.php?us_no=1235&bl_id=1235&et_id=4498

Adam T.
Mistrust the man who finds everything good, the man who finds everything evil and still more the man who is indifferent to everything.
[ Adam T. ]

◆この記事へのコメント:

◆コメント

はじめまして。
よく判らないながらも、最後まで読んでしまいました。^^;

プログラミングと食事日記・・共通点はとても少ないと思われますが、
よろしくです^^;

投稿者: yaya : URL at 2005 /04 /16 23 :21

◆コメント

yayaさん、お初です〜。
共通点は無くとも何か通じる所があれば幸いです(^^
短くしなきゃイカンのに長くなってしまう・・・癖です(w

初心者時代には無かったはずのミスや驕りが
ふと今では出てしまう。そんな部分は食事・料理といえど
同じ部分かも知れませんな。

今後も、暇な時ご来訪ヨロ〜(w

投稿者: Bystender : at 2005 /04 /17 00 :08

※必須